package com.example.myapplication.utils;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Xml;
import android.widget.ImageView;

import com.example.myapplication.bean.CourseBean;
import com.example.myapplication.bean.ExercisesBean;

import org.xmlpull.v1.XmlPullParser;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class AnalysisUtils {
	/**
	 *解析每章的习题
	 */
	public static List<ExercisesBean> getExercisesInfos(InputStream is) throws Exception {
//getExercisesInfos()方法中：参数InputStream is表示读文件的输入流，List<ExercisesBean>：表示返回为集合类型，集合元素为ExercisesBean的对象或实例
		XmlPullParser parser= Xml.newPullParser();//构造xml文件解释类XmlPullParser的实例或对象parser
		parser.setInput(is, "utf-8");//设置parser读取文件的编码方式
		List<ExercisesBean> exercisesInfos=null;//定义List集合对象exercisesInfos
		ExercisesBean exercisesInfo=null;//定义习题模板ExercisesBean的对象exercisesInfo
		int type=parser.getEventType();//得到标签(结点、元素)的类型
		while (type!=XmlPullParser.END_DOCUMENT) {//END_DOCUMENT:表示文件结尾
			switch (type) {
				case XmlPullParser.START_TAG://START_TAG:标签定义开始,即<标签名>
					if("infos".equals(parser.getName())){//标签名为infos(相当于根结点)
						exercisesInfos=new ArrayList<ExercisesBean>();//创建ArrayList实例
					}else if("exercises".equals(parser.getName())){//标签名为exercises,即题目标签定义开始
						exercisesInfo=new ExercisesBean();//创建对象exercisesInfo
						String ids=parser.getAttributeValue(0);//得到第一个属性的值
						exercisesInfo.subjectId=Integer.parseInt(ids);//把字符串ids转换为int类型，设置exercisesInfo的subjectId属性值
					}else if("subject".equals(parser.getName())){//标签名为subject,即题目标题
						String subject=parser.nextText();//读取<subject>标签中的内容
						exercisesInfo.subject=subject;//设置exercisesInfo的subject属性值
					}else if("a".equals(parser.getName())){//标签名为a,即a选项
						String a=parser.nextText();//读取<a>标签中的内容
						exercisesInfo.a=a;//设置exercisesInfo的a属性值
					}else if("b".equals(parser.getName())){
						String b=parser.nextText();
						exercisesInfo.b=b;
					}else if("c".equals(parser.getName())){
						String c=parser.nextText();
						exercisesInfo.c=c;
					}else if("d".equals(parser.getName())){
						String d=parser.nextText();
						exercisesInfo.d=d;
					}else if("answer".equals(parser.getName())){//标签名为answer
						String answer=parser.nextText();//读取<answer>标签中的内容
						exercisesInfo.answer=Integer.parseInt(answer);//把字符串answer转换为int类型，设置exercisesInfo的answer属性值
					}
					break;
				case XmlPullParser.END_TAG://END_TAG:标签定义结束,即</标签名>
					if("exercises".equals(parser.getName())){//如果是</exercises>的结束标签
						exercisesInfos.add(exercisesInfo);//把exercisesInfo实例加入集合exercisesInfos中
						exercisesInfo=null;//内存中清除实例exercisesInfo
					}
					break;
			}
			type=parser.next();//读取一个标签定义开始
		}
		return exercisesInfos;
	}
	/**
	 * 设置A、B、C、D选项是否可点击
	 */
	public static void setABCDEnable(boolean value, ImageView iv_a, ImageView iv_b, ImageView iv_c, ImageView iv_d){
		iv_a.setEnabled(value);
		iv_b.setEnabled(value);
		iv_c.setEnabled(value);
		iv_d.setEnabled(value);
	}
	/**
	 * 从SharedPreferences中读取登录用户名
	 */
	public static String readLoginUserName(Context context){
		SharedPreferences sp=context.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
		String userName=sp.getString("loginUserName", "");
		return userName;
	}
	/**
	 * 解析每章的课程视频信息
	 */
	public static List<List<CourseBean>> getCourseInfos(InputStream is) throws Exception {
		XmlPullParser parser=Xml.newPullParser();
		parser.setInput(is, "utf-8");
		List<List<CourseBean>> courseInfos=null;
		List<CourseBean> courseList=null;
		CourseBean courseInfo=null;
		int count=0;
		int type=parser.getEventType();
		while (type!=XmlPullParser.END_DOCUMENT) {
			switch (type) {
				case XmlPullParser.START_TAG:
					if("infos".equals(parser.getName())){
						courseInfos=new ArrayList<List<CourseBean>>();
						courseList=new ArrayList<CourseBean>();
					}else if("course".equals(parser.getName())){
						courseInfo=new CourseBean();
						String ids=parser.getAttributeValue(0);
						courseInfo.id=Integer.parseInt(ids);
					}else if("imgtitle".equals(parser.getName())){
						String imgtitle=parser.nextText();
						courseInfo.imgTitle=imgtitle;
					}else if("title".equals(parser.getName())){
						String title=parser.nextText();
						courseInfo.title=title;
					}else if("intro".equals(parser.getName())){
						String intro=parser.nextText();
						courseInfo.intro=intro;
					}
					break;
				case XmlPullParser.END_TAG:
					if("course".equals(parser.getName())){
						count++;
						courseList.add(courseInfo);
						if(count%2==0){// 课程界面每两个数据是一组放在List集合中
							courseInfos.add(courseList);
							courseList=null;
							courseList=new ArrayList<CourseBean>();
						}
						courseInfo=null;
					}
					break;
			}
			type=parser.next();
		}
		return courseInfos;
	}
}